iT邦幫忙

2024 iThome 鐵人賽

DAY 7
2
Modern Web

如何詠唱JavaScript的Math咒語系列 第 7

[Day07]-好像顧著唸咒語,忽略了一些細節

  • 分享至 

  • xImage
  •  

經過前幾天閱讀了幾個咒語規範,相信大家都有注意到一些看不太懂但被我草草帶過的地方吧!今天就放鬆一下來稍微探討一下規範中那些藍藍的東西吧!但太過深入會沒完沒了且離題太多,所以我會盡量適可而止。

來看看是前幾天看過的 寐偲,摳賽 的說明書:
image
首先了簡單表明了這個函式的目的:「這個函式回傳一個x的 cos 值,引數以弧度表示。」

接著呼叫他時執行以下步驟:

  1. 令一個變數n,值為ToNumber(x)
  2. n不是有限,回傳NaN
  3. n+0-0,回傳1
  4. 回傳cos(ℝ(n))的近似值

那第一步的ToNumber(x)是什麼呢??

ToNumber(x)?

info_1
ToNumber是一個抽象操作(abstract operation),他如果正常執行,就會將argument轉為數字並回傳;如果途中發生錯誤,將丟出錯誤,就無法成功回傳一個數字。

ToNumber是一個抽象操作??那又是啥?

Abstract Operation抽象操作是啥??

abstract_operation
這些抽象操作不是ECMAScript語言的一部份,定義這些抽象操作是為了更清楚的表達ECMAScript語言的語意,後面還有對於抽象操作更詳細的描述,我們進去看看吧!


image
為了讓這些操作在規範中廣泛使用,這些抽象操作(或演算法)會設計成函式然後放入參數的型式,這樣就能在其他地方透過名字來引用它,像是OperationName(arg1, arg2);有些則是會設計得像 class 中的方法:someValue.OperationName(arg1, arg2)

小結

理解抽象操作之後,我們就能清楚的了解這些長得像函式的東西其實不是函式,但如此設計增加了ECMAScript的可讀性。透過這些抽象操作的名稱,我們可以較容易的得知他想達成的目的;而內部細節的演算法可以讓我們在操作 JavaScript 時碰到一些無法理解的狀況時去查閱,就會知道究竟發生什麼才導致我們遇到的結果。

參考資料


上一篇
[Day06]-今Tangent備了Math.tan()
下一篇
[Day08]-在兩個不同宇宙之間切換的咒語?
系列文
如何詠唱JavaScript的Math咒語13
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

0
Chris
iT邦新手 4 級 ‧ 2024-09-23 09:14:53

介於規範與人話之外的區域了

0
Chris
iT邦新手 4 級 ‧ 2024-09-23 09:14:54

介於規範與人話之外的區域了

我要留言

立即登入留言